In [1]:
import plotly.graph_objects as go
import numpy as np
import plotly
plotly.offline.init_notebook_mode()

# Create figure with slider
fig = go.Figure()

x = np.linspace(0, 10, 1000)
initial_freq = 1
fig.add_trace(go.Scatter(x=x, y=np.sin(2 * np.pi * initial_freq * x)))

# Create slider steps
steps = []
for freq in range(1, 51):
    step = dict(
        method="restyle",
        args=[{"y": [np.sin(2 * np.pi * freq * x)]}],
        label=f"{freq} Hz"
    )
    steps.append(step)

# Configure the slider
sliders = [dict(
    active=0,
    currentvalue={"prefix": "Frequency: "},
    steps=steps
)]

fig.update_layout(
    sliders=sliders,
    title="Interactive Sine Wave",
    height=600
)

fig.show()
In [ ]: